The present invention relates to packet mode data transfer and, particularly, to a method and a device for re-transmitting data blocks. The method comprises transmitting a set of data blocks, receiving said set of data blocks, checking whether the transfer of the received data blocks has succeeded or failed, acknowledging at specific intervals the received data blocks with a bitmap, a bit of which corresponds to at least one transferred data block, and the value of the bit indicates the success or failure of the data transfer, and re-transmitting the data blocks the transfer of which has failed according to the bitmap. The device is arranged to implement a method according to the invention.
In data transfer, a packet typically means a data block presented in binary form, which is arranged in a specific form for data transfer. Normally, a packet comprises a heading, which contains, e.g. control data, such as synchronization bits, a target address, the sender""s address, the length of the packet, payload, which contains the data to be transferred and a tail part, which normally contains data intended for the identification and correction of errors. In packet mode data transfer, data is divided into parts and by adding to the parts the required control and error correction data packets are formed which are transmitted and acknowledged substantially independently.
Acknowledging is a commonly used error controlling procedure in packet mode data transfer. Acknowledging means a character or character string, which the party who has received the data returns to the party who has transmitted the data in order to indicate whether the transmission has succeeded or failed. Typically, the transmitting party who does not receive an acknowledgement, or gets an acknowledgement indicating that the transmission has failed, re-transmits the data.
Data transfer over a radio interface is susceptible to transfer errors and, thus, methods by means of which the reliability and correctness of the transferred data is checked and possibly corrected are crucial in this kind of data transfer.
However, in order to detect transfer errors, it is possible to only add a limited amount of data to data blocks so that the already initially scarce radio resource could be utilized as efficiently as possible.
Circuit switched transmission mode in the GSM system (Global System for Mobile Telecommunications), standardised by the ETSI (European telecommunications Standards Institute), enables a data transfer rate of 9.6 kbps. Due to the demand for higher transfer rates, the ETSI has specified a set of GSM improvements known as GSM Phase 2+. GMS Phase 2+ specifies a new feature, which is called GPRS (General Packet Switched Radio Service). GPRS enables packet switched data transfer in a mobile communication network and, in addition, connections can be provided with a high rate packet switched transmission channel by assigning them a larger proportion of the transfer frames used in communication.
In FIG. 1, a GPRS radio interface is illustrated by means of logical layer hierarchy. A physical layer 1 divides into two sublayers divided on the basis of functionalities. A physical RF layer 1a modulates physical wave forms on the basis of bit sequences received from a physical link layer 1b and, correspondingly, demodulates the received wave forms into bit sequences for being supplied to the physical link layer. The physical link layer 1b contains functionalities for transferring data through a physical channel between a mobile station and a network and uses the services of the physical RF layer. These functionalities also comprise error detection and correction for the physical layer. A lower part 2 of the data link layer is also determined by means of two functionalities. The RLC/MAC layer 2 provides services for data transfer. A MAC (Medium Access Control) 2a comprises functionalities by means of which the distribution of transfer capacity for the network and for the mobile station is controlled. An RLC 2b comprises functions for segmenting the packet data blocks of an upper LLC (Logical Link Layer) 3 into RLC data blocks for transmission and the gathering of the received RLC data blocks into LLC data blocks. RLC also comprises functions for implementing Backward Error Correction (BEC). Of the LLC data blocks, segmented data blocks of an upper SNDCP (Subnetwork Dependent Convergence Protocol) layer 4 are gathered, and the data blocks according to the packet data protocol used by the mobile station are unpacked from these data blocks.
Clause 9 of the ETSI GSM 04.60 version 6.1.0 release 1997 describes GPRS RLC functions in packet mode data transfer between peer entities and, particularly, error detection and re-transmission procedure during data transfer. FIG. 2 illustrates a re-transmission method according to the GPRS system, in its basic form. A block 4 represents a transmitting unit which in data transfer in uplink direction is a mobile station and in data transfers in downlink direction is, for example, a base transceiver station of a mobile communication system. A block 5 represents a receiving unit which, respectively, in data transfer in uplink direction is, for example, a base transceiver station of a mobile communication system and in data transfer in downlink direction is a mobile station. Hereinafter, the transmitting and receiving units are referred to with the terms Transmitter (TX) and Receiver (RX), respectively.
In GPRS, a mobile station remains registered with a network (idle mode), but a channel is or channels are only reserved for the connection for actual data transfer. Traffic formed of successive RLC blocks is called Temporary Block Flow (TBF). Each RLC block comprises a Block Sequence Number (BSN) seven bits in length. A send state variable V(S) is maintained in the transmitter 4, the send state variable denoting the sequence number of the next-in-sequence data block to be transmitted at any given time. A transmitter acknowledge state variable V(A) is also maintained in the transmitter 4, the transmitter acknowledge state variable denoting the BSN for the oldest RLC block that has not been positively acknowledged by the receiver 5. In addition to these, an acknowledge state array V(B), wherein information on the acknowledgement status of the k previous RLC blocks is being stored, is also maintained in the transmitter.
In the receiver 5, a receive state variable V(R) is maintained, the receive state variable denoting the BSN of the next-in-sequence RLC data block expected to be received. A receive window state variable V(Q) is also maintained in the transmitter, the receive window stat variable denoting the BSN for the last RLC block, which has not yet been received. A receive state array V(N), wherein information on the receive status of k previous RLC blocks is being stored, is also maintained in the receiver 5. Thus, the reception window of the receiver corresponds to the BSNs of the k blocks so that V(Q)xe2x89xa6k less than V(R).
The receiver contains a set of algorithms for detecting transfer errors in the received blocks. Error detection is well known to a person skilled in the art, and there is no reason to present it here in more detail. On receiving data block, the receiver checks whether the data transfer has succeeded or not, and if the BSN of the received block is between [V(Q),V(R)] and the transfer of the data block was successful, a receive state array V(N) element that corresponds to the data block is given the value RECEIVED. In other case, the receive state array V(N) element is given the value INVALID.
Data transfer acknowledgement is carried out with a Packet Ack/Nack message, which the receiver sends to the transmitter. The Packet Ack/Nack message comprises a Starting Sequence Number (SSN) and a Received Block Bitmap (RBB), which is formed of the receive state array V(N) so that the SSN is given the value of the variable V(R) and the RBB bits corresponds to the values of the receive state array indexed in relation to said SSN. If the receive state array element has the value RECEIVED, the value of the bits is xe2x80x9c1xe2x80x9d, if the receive state array value is INVALID, the bit value is xe2x80x9c0xe2x80x9d.
On receiving a Packet Ack/Nack message, the transmitter 4 marks for the element, indexed in relation to the receive state array V(N) SSN, the value ACKED if the value of the bit that corresponds to the element is xe2x80x9c1xe2x80x9d. If the bit value is xe2x80x9c0xe2x80x9d, the value NACKED is marked for the acknowledge state array V(B) element. The transmitter 4 sends at any given time the data block that corresponds to the oldest element of the V(B) array, the value of the data block being NACKED. When the data block has been transmitted, PENDING_ACK is marked as the value of the element. If none of the acknowledge state array V(B) elements has the value NACKED and the data block is contained in the determined window k(V(S) less than V(A)+k), a data block that corresponds to the send state variable V(S) will be transmitted, and the value PENDING_ACK is marked for the acknowledge stat array V(B) element corresponding to it.
In a situation where the difference between the value of the send state variable V(S) and the value of the acknowledge state variable V(A) reaches the value k set on the window and in the acknowledgement array, there are no elements that had the value NACKED, no new data blocks can be transmitted until acknowledgements for older data blocks are received. This situation is called transmission window stall. In connections utilizing multi-time slots, a transmission window stalls easily because it is necessary to monitor in one window all the data blocks that are transmitted in successive time slots of the same frame, although the round-trip delay is relatively long. The window k is rather short for this purpose, e.g. in the GPRS standard, k=64. At the moment, an enhance GPRS system (Enhanced GRPS, EGPRS) is being standardized under the ETSI, wherein the number of data blocks to be sent from a transmitter can be doubled in cases where a connection relatively free of interference is in use. Thus, with a solution according to prior art the transmission window stall will be even more problematic.
Naturally, the easiest solution is to increase the size of the window and, correspondingly, that of the bitmap, whereupon the acknowledgement process speeds up and the transmission window will not stall as easily. However, because the size of a Packet Ack/Nack message is specific, and it should also be possible to transfer data (e.g. measurement data) relating to other functions in connection with it, the increase of the bitmap size has limits.
Now, a method and a device implementing the method have been invented, by means of which the effect of the problem presented above can be significantly mitigated. It is characteristic of a method according to the invention that it comprises determining a set of acknowledgement algorithms each of which comprises a method for forming a bitmap of the received data blocks; maintaining information on the number of those data blocks which were not successfully received or the reception of which has not been acknowledged; and initiating one of said acknowledgement algorithms, selecting the acknowledgement algorithm according to said number of data blocks.
An objective of the invention is also a data transfer device and a data transfer system.
The invention is based on the idea that the aim to avoid the transmission window stall by monitoring the number of data blocks in the reception window and by controlling the acknowledgement procedure according to said number in an optimized manner.
According to a second embodiment of the invention, the solution presented above is enhanced preferably by also monitoring the number of data blocks in the transmission window and by also specifying the acknowledgement procedure according to this number.